package com.qf.helloworld;

import com.qf.util.ConnectionUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import org.junit.Test;

public class Publisher {

    @Test
    public void publish() throws Exception {
        //1. 获取连接对象
        Connection connection = ConnectionUtil.getConnection();

        //2. 获取到Channel
        Channel channel = connection.createChannel();

        //3. 声明队列
        //3.1 queue: 声明队列名称
        //3.2 durable: mq服务重启后,队列是否还在(持久化)
        //3.3 exclusive: 当前队列是否排外,如果为true,证明排外,只允许当前Connection对象使用
        //3.4 autoDelete: 如果当前队列没有消费者监听,是否需要自动删除
        //3.5 args: 其他额外属性
        channel.queueDeclare("hello_queue",true,false,false,null);

        //4. 发送消息(绑定指定队列)
        String msg = "Hello World!";
        //4.1 exchange: 发送消息到哪个交换机, ""为默认的交换机
        //4.2 routingKey: 交换机中的消息路由到队列的规则, 默认交换机会将消息路由到以routingKey命名的队列中
        //4.3 props: 消息携带的其他额外属性
        //4.4 body: 具体消息
        channel.basicPublish("","hello_queue",null,msg.getBytes());
        System.out.println("发送消息成功!");

        //5. 释放资源
        channel.close();
        connection.close();

    }

}
